تمتلك لارافيل دالة مفيدة redirect()
تعمل هذه الدالة على توجيه المستخدم إلى صفحة أو حدث بمصاحبة بيانات data أو بدون، وكما هو معروف عن الدوال، فإن بعض الدوال تتوفر بإنكانية تمرير متغيرات.
لتطبيق هذه الدوال، قم باستخدامها في أي متحكم controller.
التوجيه البسيط
لو افترضنا أن موقعك الإلكتروني يحمل النطاق www.7seen.net فإن كل دالة من التالي ستوجهك رابط الموقع بالاضافة إلى قيمة متغيره كتالي:
فللتوجيه إلى https://www.7seen.net/homepage
return redirect('homepage');
أما التوجيه إلى https://www.7seen.net
return redirect('');
والتوجيه إلى https://www.7seen.net/auth/login
return redirect('auth/login');
ولو أردت التوجه إلى موقع خارجي بنطاق آخر
return redirect('https://7seen.net');
الدوال المتسلسلة Chaining Methods
نحتاج أحيانا إعادة المستخدم إلى الصفحة السابقة عند إدخاله لبيانات خاطئة، ولتوجيه المستخدم إلى الصفحة السابقة نستخدم:
return redirect()->back();
ولكن ماذا لو أردت تمرير رسالة خطأ للسمتخدم:
return redirect()->back()->with('error', 'معذرة هنا خطأ.');
ولقراءة رسالة الخطأ session(‘error’)
يمكنك استخدام التسلسل بالقدر الذي تشاء كتالي:
return redirect()->back()->with('error', 'هناك خطأ.')->with('order_value', $value);
ولكن ماذا لو لديك متغيرات كثيرة تريد تمريرها، لاعليك فكل ما عليك هو عمل مصفوفة وتمريرها، كتالي:
$parameters = ['error' => 'هناك خطأ.', 'order_value' => $value]; return redirect()->back()->with($parameters);
وإذا أتيت من إستمارة form، فإن الدالة المفضلة لدي هي withInput()
هذه الدالة ليس لديها متغيرات لتمريرها إنما تأخذ القيم التي أتت مع الإستمارة form وتخزنها في الجلسة session كما لو تم تخزينها يدويا، ولإستخدام القيم السابقة للإستمارة form نستخدم old($key)
بكل بساطة.
التوجيه إلى موجه Redirect to a Route
لو امتلكنا موجهات كثيرة routes ونريد التوجه وفق لأحدها فإننا نستخدم دالة التوجيه ونمرر لها اسم الموجه، فمثلا
// get('books', ['as' => 'books_list', 'uses' => 'BooksController@index']); return redirect()->route('books'); // get('book/{id}', ['as' => 'book_view', 'uses' => 'BooksController@show']); return redirect()->route('book_view', 1); // get('book/{category}/{id}', ['as' => 'book_view', 'uses' => 'BooksController@show']); return redirect()->route('book_view', [513, 1]); return redirect()->route('book_view', ['category'=>513, 'id'=>1]);
التوجيه إلى حدث في متحكم Redirect to a Controller Action
يمكنك التوجه إلى داله بداخل متحكم controller، بغض النظر عن الموجه router
return redirect()->action('App\Http\Controllers\BooksController@index');
أما لو كانت الدالة تتطلب متغيرات فيمكن ذلك كتالي
return redirect()->action('App\Http\Controllers\BooksController@show', [1]);
إلى هنا يكون فريق مدونة 7 سين قد استكشف معكم جميع الخيارات المتاحة في دالة التوجيه الرائعة من لارافيل، نتمنى لكم تفوق أكثر لا تنسى عزيزي القارئ متابعتنا على مواقع التواصل الإجتماعي للحصول على آخر أخبار المدونة أولاَ بأول
مقال رائع ومفيد